home *** CD-ROM | disk | FTP | other *** search
/ 9-Digit Zip Code Directory / 9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO / z4src.zip / CINDEXWK.H < prev    next >
Text File  |  1989-08-29  |  6KB  |  191 lines

  1. /*   cindexwk.h   working variables and defines
  2.  *   ---------------------------------------------------------
  3.  *  |  C-INDEX/PC                                             |
  4.  *  |  C-INDEX for Turbo C                                    |
  5.  *  |  C-INDEX for Microsoft C                                |
  6.  *  |  Version 3.3                                            |
  7.  *  |                                                         |
  8.  *  |  Trio Systems                                           |
  9.  *  |  953 E. Colorado Bl. Suite 531                          |
  10.  *  |  Pasadena, CA  91106                                    |
  11.  *  |  818/798-5567                                           |
  12.  *  |                                                         |
  13.  *  |  (c) Copyright 1983, 1984, 1985, 1986, 1987, 1988, 1989 |
  14.  *   ---------------------------------------------------------
  15.  */
  16.  
  17. /* compiler dependent information */
  18.  
  19. /* define 16 bit integers as being type short - correct for most compilers */
  20. #ifndef INTDEF
  21. typedef short INT16;
  22. #define INTDEF
  23. #endif
  24.  
  25. /* internal flags */
  26.  
  27. /* general use */
  28. #define TRUE 1
  29. #define FALSE 0
  30.  
  31.  
  32. /* for different kinds of adds */
  33.  
  34. #define CHANGE 1    /* change existing key */
  35. #define SAVE 2        /* add/change key - which ever is appropriate */ 
  36. #define UNQ 3        /* add unique data record */
  37. #define DUP 4        /* add duplicate record */
  38. #define CHGCUR 5    /* change existing current key */
  39.  
  40. /* status of cindex+ flags */
  41.  
  42. #define ADDJST 1    /* adjust() flag - means just added to node */
  43. #define DELJST 2    /* adjust() flag - means just deleted */
  44.  
  45. #define DELON 1        /* means current pointer is back one due to delete */
  46. #define DELOFF 0    /* means current pointer is ok */
  47.  
  48. #define BEGOFNDE -1    /* means current  pointer is before keys in node */
  49.  
  50. /* buffering (bcb) defines */
  51.  
  52. #ifndef NULL 
  53. #define MYNULL 0        /* have to use something */
  54. #else
  55. #define MYNULL NULL        /* use supplied null pointer definition */
  56. #endif
  57.  
  58. #define NULLFD   -1        /* null file descriptor */
  59. #define NULLNDE  -1        /* null node number */
  60. #define NULLNEXT MYNULL        /* null next pointer */
  61. #define NULLPTR MYNULL        /* null char ptr */
  62. #define CLEAN    0        /* clean buffer - does not need disk write */
  63. #define DIRTY    1        /* dirty bcb buffer - needs write to disk */
  64.  
  65. /* miscellaneous */
  66.  
  67.  
  68. #define NEWNDE 1    /* new node - used in nodewrite */
  69. #define OLDNDE 0    /* old node - used in nodewrite */
  70.  
  71. #define BYINLN sizeof (long)    /* four bytes in long integer */
  72. #define BYININ sizeof (int)    /* two bytes in integer */
  73.  
  74. #define MAXFLDLEN 10240        /* 10k */
  75. #define DATAPART 248        /* size of data chunks */
  76. #define SPLITLMT 520        /* limit for split */
  77. #define ENDLMT 1000        /* limit for split if last node being split */ 
  78. #define DEFLEV   3        /* now open set to 3 */
  79. #define DEFLEVMU 1        /* now open multi-user set to 1 */
  80. #define HDRUPLEV 1        
  81.     /* security level at which the header is written out when changed */
  82. #define DEMOLIMIT 50                /* file size of 50k on demo version */
  83.  
  84. /* sizes of objects */
  85.  
  86. #define SZEREC sizeof (long)          /* record number long value */
  87. #define SZEDBYTE 1        /* size of data byte */
  88. #define SZENDE sizeof (INT16)          /* node pointer int value */
  89. #define NODESZE 1024        /* size of node */
  90. #define HDRSZE 1024        /* size of header */
  91. #define HDRAREA sizeof(struct hdrrec)    /* amount to read into buf */
  92. #ifdef REMOVED
  93. #define HDRAREA 28                            /* size of header on disk */
  94. #endif
  95. #define NODEAREA sizeof(struct node)    /* amount to read into node buf */
  96. #define KEYSZE 256        /* 256 byte keys (including data) */
  97. #define BIGBUF 1268    /* buffer for handling overflow due to insert */
  98.  
  99. /* macros */
  100.  
  101. #define logicval(a) ((a) > 0 ? 1 : -1)        /* for function returns */
  102. #define moveup(p) (p + (((int) *p) & 0xFF) + 1)    
  103.    /* advances pointer to next key in node */
  104.  
  105. #define trnsrec(des, src) *(long *) (des) = *(long *) (src);
  106.   /* transfers a data record number */
  107.  
  108. #define trnsnde(des, src) *(INT16 *) (des) = *(INT16 *) (src);
  109.   /* transfers an index node pointer */
  110.  
  111. /* structure definitions */
  112.  
  113. struct node {        /* universal node declaration */
  114.     INT16 level;    /* level of node */
  115.     INT16 count;    /* key count */
  116.     INT16 free;    /* free space */
  117.     INT16 p0;        /* p0 pointer */
  118.     INT16 forwrd;    /* forward pointer */
  119.     INT16 revrse;    /* reverse pointer */
  120.     char keystr[BIGBUF];    /* area for keys */
  121. }; 
  122.  
  123.  
  124. struct hdrrec {        /* header record on disk */
  125.     char ck1;
  126.     INT16 hroot;    /* root node pointer */
  127.     char ck2;
  128.     INT16 hfirst;    /* first leaf node pointer */
  129.     char ck3;
  130.     INT16 hlast;    /* last leaf node pointer */ 
  131.     char ck4;
  132.     INT16 hlevels;    /* number of levels in tree */
  133.     char ck5;
  134.     INT16 hnext;    /* next available node */
  135.     char ck6;
  136.     long hnxtdrec;    /* next data record number */
  137.     char ck7;
  138.     INT16 hendofile;    /* actual end of file */
  139.     char ck8;    
  140.     long updatnum;        /* last update number */
  141. };
  142.  
  143.  
  144. /* needed for high level words */
  145.  
  146. #define MAXDLEN 16318     /* 16k */
  147. #define MAXLEVELS 3    /* level 3 is highest level */
  148.  
  149. #define INVALID 'I'    /* for validation of psp */
  150. #define PSPOPEN 'O'    /* means file is open */
  151. #define PSPCLOSED 'C'    /* means file is closed */
  152.  
  153.  
  154. #define goodindex(i)     (i >= 1 && i <= MAXINDXS)    /* one less */
  155. #define gooddlen(x)      (x >=0 && x <= MAXDLEN)   /* max data len */
  156. #define goodklen(s)      (strlen(s) < MAXKLEN)      /* one less for '\0' */
  157. #define goodat(data, len)   (data+len >= data)    /* no overflow on address */
  158. #define goodlevel(lev)     (lev >= 0 && lev <= MAXLEVELS)  
  159.     /* good security level */
  160.  
  161.  
  162. /* multi user defines */
  163.  
  164. #define FLOCKBYTE 1            /* header file lock byte */
  165. #define EXCLBYTE  0            /* exclusive file use lock byte */
  166. #define SHAREOFF    512        /* offset for share bytes in header record */
  167.  
  168. #define NUMSHARE    127        /* number of share bytes */
  169.  
  170. #define UPDBYTE    1020        /* flag byte in header */
  171.                                     /* indicating upddisk in process */
  172. #define SETUPD        13245        /* flag indicating upddisk in process */
  173. #define RESETUPD    0            /* flag reseting upddisk in process byte */
  174. #define UPDRETRY    5000        /* number of retries before giving up on upddisk */
  175.  
  176. #define OFF 'O'
  177. #define LOCKED 'L'
  178. #define UNLOCKED 'U'
  179.  
  180.  
  181. /* ------------------------------------------------------- */
  182.  
  183. /* internal function prototypes */
  184.  
  185. #ifdef ANSI
  186. #include "cndxprot.h"    /* function prototypes */
  187. #else
  188. #include "cndxfunc.h"    /* function declarations */
  189. #endif
  190.  
  191.